import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.security.spec.RSAOtherPrimeInfo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 28463
 * Date: 2022—08—08
 * Time: 14:46
 */
public class JDBCInsert {
    //通过JDBC来操作数据库，往数据库里插入一条记录
    //往 java01 这个数据库中的 student1 表中，插入一条记录
    public static void main(String[] args) throws SQLException {
        //1.创建数据源对象，数据源对象就描述了要访问的数据库是什么，在哪
        DataSource dataSource = new MysqlDataSource();//向下转型
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java01?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

/*        //不使用多态的写法
        //不建议使用这种写法，
        MysqlDataSource mysqlDataSource = new MysqlDataSource();
        mysqlDataSource.setURL();*/

        //2.让代码和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        //用户输入，通过用户输入的数据，来确定插入的值
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要插入的学号：");
        int id = scanner.nextInt();
        System.out.println("请输入要插入的名字：");
        String name = scanner.next();


        //3.构造要执行的sql语句
/*        String sql = "insert into student1 values(" + id + ", '" + name + "')";*/
        String sql = "insert into student1 values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("statement: " + statement);

        //4.执行sql，方法有两个（
        // executeUpdate 对应插入、删除、修改语句,返回值表示这次SQL操作影响到的行数，
        // executeQuery  对应查询语句，返回值则是返回的临时表数据)
        int n = statement.executeUpdate();
        System.out.println("n = " + n);

        //5.完成之后，就需要关闭释放相关资源
        statement.close();
        connection.close();
    }
}
